package cn.it.shop.action;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import cn.it.shop.model.Forder;
import cn.it.shop.model.Status;
import cn.it.shop.model.User;

@Controller("forderAction")  
@Scope("prototype")  
public class ForderAction extends BaseAction<Forder> {  
      
    @Override  
    public Forder getModel() {  
        model = (Forder) session.get("forder");  
        return model;  
    }  
  
    //实现购物车（订单）与购物项（订单项）级联入库功能  
    public String save() {  
//      // 把session中的购物项交给当前的model对象  
//      Forder forder = (Forder) session.get("forder");  
//      //model.setSorders(forder.getSorders());  
//      forder.setAddress(model.getAddress());  
//      forder.setName(model.getName());  
//      forder.setPhone(model.getPhone());  
//      forder.setRemark(model.getRemark());  
//      forder.setUser((User)session.get("user"));  
//      forder.setStatus(new Status(1));  
//      forder.setPost(model.getPost());  
//      //级联入库(需要在xml或者POJO的注解中配置)，需要sorder关联forder  
//      //在SorderServiceImpl类中追加sorder.setForder(forder);  
//      forderService.save(forder);  
          
        model.setUser((User)session.get("user"));  
        model.setStatus(new Status(1));  
        forderService.save(model);  
          
        
        //此时购物车已经入库，那么原来session中的购物车就应该清空  
        session.put("oldForder", session.get("forder"));//先将原来的购物车信息保存下来，因为后面付款的时候还需要相关信息  
        session.put("forder", new Forder());//new一个新的空购物车（相当于清空了购物车），还可以方便用户再买~ 
        return "bank";  
    }  
    
    /*
     *  从上面的代码中可以看出，有两种方法：第一种不覆写getModel方法（我注释掉的部分），这个方法比较笨，
     *  由于ForderAction继承了BaseAction，而BaseAction实现了ModelDriven接口，所以传过来的数据会封装到model中，
     *  model是BaseAction中的一个属性，然后我们需要将model中的信息全部传到session中的forder中，
     *  然后forder中数据有了才能与Sorder一起级联入库，不过这种方法有点笨……所以我们采用第二种方法，
     *  重写getModel方法，直接将forder赋给model即可，然后我们只要将model中级联的项添加一下即可，
     *  即上面非注释的代码。这样用户点击订单确认后，信息入库，跳转到支付页面（支付页面接下来要做，
     *  目前先随便跳转到一个jsp即可）。
     */
}  